package org.taskexecution.taskexecution.infrastructure.po.scheduledTask;

/**
 * @author Lydond
 * @description: 任务定义 实体类
 * @create_date: 2025/10/20-15:09
 */

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 1.任务定义表 (任务类型)
 */
@Data
@TableName("task_definition")
public class TaskDefinition {

    /**
     * 任务定义ID
     */
    @TableId(value = "task_def_id", type = IdType.AUTO)
    private Long taskDefId;

    /**
     * 所属应用ID
     */
    @TableField("app_id")
    private String appId;

    /**
     * 应用名称
     */

    @TableField(exist = false)
    private String appName;

    /**
     * 关联菜单ID (可为空，如果任务不强关联菜单)
     */
    @TableField("menu_id")
    private String menuId;

    /**
     * 菜单名称
     */
    @TableField(exist = false)
    private String menuName;

    /**
     * 任务名称 (例如: 合同到期提醒)
     */
    @TableField("task_name")
    private String taskName;

    /**
     * 任务唯一标识 (例如: CONTRACT_EXPIRY_NOTICE，用于代码中识别)
     */
    @TableField("task_key")
    private String taskKey;

    /**
     * 任务描述
     */
    @TableField("description")
    private String description;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;
}